// 2025/10/04
// Author: Forever
#include <bits/stdc++.h>
using namespace std;

int n, m, p, q;
vector<int> edges[305];
long double rows[305][305];

void gauss()
{
    for (int row = 1; row <= n; row++) {
        int now = row;
        for (int i = row + 1; i <= n; i++)
            if (fabs(rows[i][row]) > fabs(rows[now][row]))
                now = i;
        if (now != row)
            for (int i = 1; i <= n + 1; i++)
                swap(rows[now][i], rows[row][i]);
        for (int i = row + 1; i <= n + 1; i++)
            rows[row][i] /= rows[row][row];
        for (int i = 1; i <= n; i++)
            if (i != row && fabs(rows[i][row]) > 1e-7)
                for (int j = row + 1; j <= n + 1; j++)
                    rows[i][j] -= rows[i][row] * rows[row][j];
    }
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m >> p >> q;
    for (int i = 1; i <= m; i++){
        int u, v;
        cin >> u >> v;
        edges[u].push_back(v);
        edges[v].push_back(u);
    }
    for (int i = 1; i <= n; i++){
        rows[i][i] = 100;
        for (auto x : edges[i])
            rows[i][x] = -100.0 / edges[x].size() * (q - p) / q;
    }
    rows[1][n + 1] = 100;
    gauss();
    for (int i = 1; i <= n; i++)
        cout << fixed << setprecision(10) << rows[i][n + 1] * p / q << endl;
    return 0;
}
